#ifndef __RINGBUFFER_H
#define __RINGBUFFER_H

#include <rtthread.h>

// 定义通用环形缓冲区结构体
typedef struct {
    rt_mutex_t lock;          // 互斥锁，用于保护读指针更新和缓冲区状态检查
    volatile rt_atomic_t write_idx;    // 写指针，使用原子操作，适用于中断侧写入
    rt_size_t read_idx;       // 共享读指针，多消费者通过锁保护
    uint8_t *data;            // 数据存储区指针
    rt_size_t size;           // 缓冲区大小
    rt_size_t element_size;   // 每个元素的大小
} generic_ring_buffer_t;
    

generic_ring_buffer_t *generic_ring_buffer_create(rt_size_t size, rt_size_t element_size);
rt_bool_t generic_ring_buffer_put(generic_ring_buffer_t *buffer, const void *element);
rt_bool_t generic_ring_buffer_get(generic_ring_buffer_t *buffer, void *element);

#endif // __RINGBUFFER_H